﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acFrotaVeiculos : PageBase 
{
    private bool exclusao = false;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                CarregaComboFabricante(rcbFabricante);
                OcultaCampos(true);
            }
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        try
        {
            Pesquisa();
            rgVeiculos.DataBind();
            OcultaCampos(false);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
            OcultaCampos(true);
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        try
        {
            foreach (RadComboBoxItem item in rcbFabricante.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                chk.Checked = false;
            }
            rcbFabricante.Text = "";

            rcbVeiculo.Items.Clear();
            rcbVeiculo.Text = "";

            rcbClassificacao.Items.Clear();
            rcbClassificacao.Text = "";

            OcultaCampos(true);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgVeiculos_ItemCreated(object sender, GridItemEventArgs e)
    {
        try
        {
            if (e.Item is GridDataItem)
            {
                HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
                editLink.Attributes["href"] = "#";
                editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdFrotaModelo"], e.Item.ItemIndex);
            }
            if (!exclusao) OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgVeiculos_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        try
        {
            Pesquisa();
            if (!exclusao) OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgVeiculos_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            FrotaModelo modelo = new FrotaModelo();

            GridEditableItem editedItem = e.Item as GridEditableItem;

            exclusao = true;
            int idmodelo = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["IdFrotaModelo"].ToString());
            modelo.IdFrotaModelo = idmodelo;
            modelo.Excluir();

            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        try
        {
            CarregaComboVeiculo(rcbVeiculo, rcbFabricante);
            rcbVeiculo.Text = "";

            rcbClassificacao.Items.Clear();
            rcbClassificacao.Text = "";

            OcultaCampos(true);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void btnBuscarVeiculos_Click(object sender, EventArgs e)
    {
        try
        {
            CarregaComboVeiculo(rcbVeiculo, rcbFabricante);
            rcbVeiculo.Text = "";

            rcbClassificacao.Items.Clear();
            rcbClassificacao.Text = "";

            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void btnBuscarClassif_Click(object sender, EventArgs e)
    {
        try
        {
            CarregaComboClassif(rcbClassificacao, rcbVeiculo);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }
    #endregion

    #region Metodos
    private void CarregaComboFabricante(RadComboBox _combo)
    {
        try
        {
            FrotaModelo modelo = new FrotaModelo();

            _combo.DataSource = modelo.CarregarComboFabricantes();
            _combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void CarregaComboVeiculo(RadComboBox _combo, RadComboBox _comboFabricante)
    {
        try
        {
            FrotaModelo modelo = new FrotaModelo();

            int[] idfabricante = ObterCodigoFabricante(_comboFabricante);

            _combo.DataSource = modelo.CarregarComboVeiculos(idfabricante);
            _combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void CarregaComboClassif(RadComboBox _combo, RadComboBox _comboVeiculo)
    {
        try
        {
            FrotaModelo modelo = new FrotaModelo();

            int[] idveiculo = ObterCodigoVeiculo(_comboVeiculo);

            _combo.DataSource = modelo.CarregarComboClassificacao(idveiculo);
            _combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }

    private void Pesquisa()
    {
        try
        {
            rgVeiculos.DataSource = CarregaVeiculos();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private int[] ObterCodigoFabricante(RadComboBox _combo)
    {
        try
        {
            List<int> listCodigo = new List<int>();

            foreach (RadComboBoxItem item in _combo.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    listCodigo.Add(int.Parse(item.Value));
                }
            }

            int[] codigo = new int[listCodigo.Count];
            for (int i = 0; i < listCodigo.Count; i++)
            {
                codigo[i] = listCodigo[i];
            }

            return codigo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private int[] ObterCodigoVeiculo(RadComboBox _combo)
    {
        try
        {
            List<int> listCodigo = new List<int>();

            foreach (RadComboBoxItem item in _combo.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    listCodigo.Add(int.Parse(item.Value));
                }
            }

            int[] codigo = new int[listCodigo.Count];
            for (int i = 0; i < listCodigo.Count; i++)
            {
                codigo[i] = listCodigo[i];
            }

            return codigo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private int[] ObterCodigoClassif(RadComboBox _combo)
    {
        try
        {
            List<int> listCodigo = new List<int>();

            foreach (RadComboBoxItem item in _combo.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    listCodigo.Add(int.Parse(item.Value));
                }
            }

            int[] codigo = new int[listCodigo.Count];
            for (int i = 0; i < listCodigo.Count; i++)
            {
                codigo[i] = listCodigo[i];
            }

            return codigo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private DataTable CarregaVeiculos()
    {
        try
        {
            FrotaModelo modelo = new FrotaModelo();
            DataTable listModelo = new DataTable();

            int[] idfabricante = ObterCodigoFabricante(rcbFabricante);
            int[] idmodelo = ObterCodigoVeiculo(rcbVeiculo);
            int[] idclassificacao = ObterCodigoClassif(rcbClassificacao);

            listModelo = modelo.SelectModelos(idfabricante, idmodelo, idclassificacao);

            return listModelo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        trMensagem.Visible = !oculta;
    }
    #endregion

}
